package com.yzqp.generator.prop.java;

import com.yzqp.generator.util.FileUtil;
import com.yzqp.generator.util.HumpNameUtil;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

import java.io.File;

/**
 * 生成的包的属性
 */
@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "generator.base")
@PropertySource("classpath:application-generator.yml")
public class GeneratorBaseProp {

    /**
     * 数据库名称
     */
    private String databaseName = "test";

    /**
     * 基础 java 包名称
     */
    private String baseJavaPackage = "com.yzqp.generator.test";

    /**
     * bean的名称
     */
    private String beanName = "bean";

    /**
     * mapper的名称
     */
    private String mapperName = "mapper";

    /**
     * controller的名称
     */
    private String controllerName = "controller";

    /**
     * service的名称
     */
    private String serviceName = "service";

    /**
     * saveForm的名称
     */
    private String saveFormName = "service";

    /**
     * pageForm的名称
     */
    private String pageFormName = "service";

    /**
     * vo的名称
     */
    private String voName = "service";

    /**
     * vue api模块
     */
    private String vueApiModule;

    /**
     * 生成表名
     */
    private String tableName = "sys_goods";

    /**
     * 是否覆盖
     */
    private Boolean coverFlag = false;


    /**
     * 获得基础路径
     * 即 返回 E:\\myproject\\blog\\blog_server\\src\\main\\java\\com\\yzqp\\generator\\test
     *
     * @return
     */
    public String getSavePath() {
        // 获得java 包的基础路径
        String baseJavaPath = FileUtil.getCurrentProjectJavaPackageRootPath();
        // 基础包路径
        String baseJavaPackage = this.baseJavaPackage;
        // 通过 . 分割包路径
        String[] packageArr = baseJavaPackage.split("\\.");
        for (String packageItem : packageArr) {
            baseJavaPath = baseJavaPath + File.separator + packageItem;
        }
        return baseJavaPath;
    }

    /**
     * 获得基础类名
     * 例如：sys_goods_info  返回 GoodsInfo
     *
     * @return
     */
    public String getBaseClassName() {
        String baseClassName = HumpNameUtil.getJavaClassName(this.getTableName());
        return baseClassName;
    }
}
